package es.ibm.santillana.mdm.webservicesdiego;

import java.beans.XMLDecoder;
import java.util.List;

import javax.xml.bind.annotation.XmlList;

import org.jdom2.Document;
import org.xml.sax.XMLReader;

import com.ibm.pim.attribute.AttributeInstance;
import com.ibm.pim.catalog.Catalog;
import com.ibm.pim.catalog.CatalogManager;
import com.ibm.pim.catalog.item.Item;
import com.ibm.pim.common.ExtendedValidationErrors;
import com.ibm.pim.common.ProcessingOptions;
import com.ibm.pim.common.ValidationError;
import com.ibm.pim.context.Context;
import com.ibm.pim.context.PIMContextFactory;
import com.ibm.pim.utils.Logger;

import es.ibm.santillana.mdm.common.util.ConstSantillana;
import es.ibm.santillana.mdm.common.util.SantillanaLogger;

public class WSExternalSystemsInput {

	
	public String update(String ID_Articulo, String peso){
		Logger log = SantillanaLogger.getLogger();
		log.logInfo("EN WS Articulo"+ID_Articulo);
		log.logInfo("EN WS peso"+peso);
		//return updateAtribute(ConstSantillana.PESO, peso, sPk);
		return "Todo ok";
	}
	public String updatePeso(String peso, String sPk){
		return updateAtribute(ConstSantillana.PESO, peso, sPk);
	}
	
	private String updateAtribute(String path, String value,  String sPk){
		
		Item item = getItem(sPk);
		if(item==null){
			return "No existe un item con la PK: " + sPk;
		}
		AttributeInstance.SetValueResult valor = item.setAttributeValue(path, value);
		if(valor.equals(AttributeInstance.SetValueResult.VALUE_CHANGED)){
			return saveItem(item);
		}else{
			return "No se ha actualizado el valor por: " + valor.toString();
		}
	}
	
	private Item getItem (String sPk){
		Context ctxPIM = PIMContextFactory.getCurrentContext();
		
		CatalogManager ctmMan = ctxPIM.getCatalogManager();
		Catalog ctgArticulos = ctmMan.getCatalog(ConstSantillana.MAESTRO_ARTICULOS);
		ProcessingOptions opcionesP = ctgArticulos.getProcessingOptions();
		opcionesP.setPostSaveScriptProcessing(false);
		//opcionesP.setAllProcessingOptions(false);
		return ctgArticulos.getItemByPrimaryKey(sPk);
	}
	
	private String saveItem(Item item){
		String sError = "";
		ExtendedValidationErrors errores = item.save();
		if(errores!=null){
			List<ValidationError> errors = errores.getErrors();
			for(ValidationError error : errors){
				sError = sError + error.toString();
			}
		}
		if(sError!=null && sError.equals("")){
			return "Todo ok";
		}
		return sError;
	}
}
